package pwd.allen.androiddemo.activity;

import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.RoundedCorner;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.Spinner;
import androidx.appcompat.app.AppCompatActivity;
import com.bumptech.glide.Glide;
import com.bumptech.glide.RequestBuilder;
import com.bumptech.glide.RequestManager;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import pwd.allen.androiddemo.R;
import pwd.allen.androiddemo.entity.Planet;
import pwd.allen.androiddemo.util.MethodCommon;

import java.util.ArrayList;
import java.util.List;

/**
 * android默认给每个应用只分配16M的内存，所以如果加载过多的图片，为了 防止内存溢出 ，应该将图片缓存起来
 *
 * Glide框架
 *  使用glide框架，支持自动、智能地采样(downsampling)和缓存(caching)，最小化存储的开销和解码的次数
 *  默认情况下，Glide自动就是开启内存缓存和磁盘缓存，磁盘缓存默认存储在应用内部文件，访问应用内部文件无需动态申请权限
 *  with()方法中传入的Context实例会决定Glide加载图片的生命周期，当前activity销毁时图片加载也会停止
 */
public class ImageActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

    private static final String[] selects = {"fitCenter", "centerCrop", "centerInside", "加载网络图片", "circleCrop", "transform"};

    private ImageView iv;

    private Object res;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image);
        iv = findViewById(R.id.iv);
        iv.setScaleType(ImageView.ScaleType.FIT_CENTER);

        //<editor-fold desc="加载图片">
        res = R.drawable.apple;
//        iv.setImageResource(res);
        // 方式二：
        Glide.with(this)
                .load(res)
                .into(iv);
        //</editor-fold>

        Spinner sp = findViewById(R.id.spinner);
        sp.setAdapter(new ArrayAdapter<String>(this, R.layout.item_select, selects));
        sp.setOnItemSelectedListener(this);
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        switch (selects[position]) {
            case "加载网络图片":
                // 加载网络图片 要声明android.permission.INTERNET权限;Android9.0包括之后要访问http的话需要设置networkSecurityConfig
                res = "http://b247.photo.store.qq.com/psb?/V11ZojBI312o2K/63aY8a4M5quhi.78*krOo7k3Gu3cknuclBJHS3g1fpc!/b/dDXWPZMlBgAA";
                Glide.with(this)
                        .load(res)
                        .into(iv);
                break;
            case "circleCrop":
                // 圆角
                Glide.with(this)
                        .load(res)
                        .circleCrop() // 如果没有这个则需要升级glide版本
                        .into(iv);
                break;
            case "fitCenter":
                Glide.with(this)
                        .load(res)
                        .fitCenter()
                        .into(iv);
                break;
            case "centerCrop":
                Glide.with(this)
                        .load(res)
                        .centerCrop()
                        .into(iv);
                break;
            case "centerInside":
                Glide.with(this)
                        .load(res)
                        .centerInside()
                        .into(iv);
                break;
            case "transform":
                Glide.with(this)
                        .load(res)
                        .transform(new RoundedCorners(MethodCommon.dip2px(this, 50))) // 如果没有这个则需要升级glide版本
                        .into(iv);
                break;
        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }
}